package br.com.esporte.view.site.component.listaAtualizacao;

import br.com.esporte.model.atualizacao.Atualizacao;
import br.com.esporte.model.atualizacao.AtualizacaoComunicadoGrupo;
import br.com.esporte.model.atualizacao.AtualizacaoDiaPraticado;
import br.com.esporte.model.atualizacao.AtualizacaoGrupo;
import br.com.esporte.model.atualizacao.AtualizacaoConviteModerador;
import br.com.esporte.model.atualizacao.AtualizacaoRegra;
import br.com.esporte.model.atualizacao.AtualizacaoVotacao;
import br.com.esporte.model.atualizacao.TipoAtualizacaoEnum;
import br.com.esporte.view.site.component.listaAtualizacao.item.ItemAtualizacao;
import br.com.esporte.view.site.component.listaAtualizacao.item.comunicado.ItemAtualizacaoComunicado;
import br.com.esporte.view.site.component.listaAtualizacao.item.comunicadoGrupo.ItemAtualizacaoComunicadoGrupo;
import br.com.esporte.view.site.component.listaAtualizacao.item.diaPraticado.ItemAtualizacaoDiaPraticado;
import br.com.esporte.view.site.component.listaAtualizacao.item.grupo.ItemAtualizacaoGrupo;
import br.com.esporte.view.site.component.listaAtualizacao.item.jogador.ItemAtualizacaoJogador;
import br.com.esporte.view.site.component.listaAtualizacao.item.regra.ItemAtualizacaoRegra;
import br.com.esporte.view.site.component.listaAtualizacao.item.voto.ItemAtualizacaoVoto;

/**
 * 
 * @author Milton Domingues
 *
 */
public class AtualizacaoItemFactory {

	private static AtualizacaoItemFactory atualizacaoItemFactory;

	public synchronized static AtualizacaoItemFactory getnstance(){
		if(atualizacaoItemFactory == null){
			atualizacaoItemFactory = new AtualizacaoItemFactory();
		}
		return atualizacaoItemFactory;
	}

	private AtualizacaoItemFactory() {

	}

	@SuppressWarnings("rawtypes")
	public ItemAtualizacao createItem(String id, Atualizacao atualizacao){
		if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVA_REGRA)){
			return new ItemAtualizacaoRegra(id, (AtualizacaoRegra) atualizacao);
		}else if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVA_VOTACAO)){
			return new ItemAtualizacaoVoto(id, (AtualizacaoVotacao) atualizacao);
		}else if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVO_COMUNICADO)){
			return new ItemAtualizacaoComunicado(id, atualizacao);
		}else if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVO_COMUNICADO_GRUPO)){
			return new ItemAtualizacaoComunicadoGrupo(id, (AtualizacaoComunicadoGrupo) atualizacao);
		}else if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVO_DIA_PRATICADO)){
			return new ItemAtualizacaoDiaPraticado(id, (AtualizacaoDiaPraticado) atualizacao);
		}else if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVO_GRUPO)){
			return new ItemAtualizacaoGrupo(id, (AtualizacaoGrupo) atualizacao);
		}else if(atualizacao.getTipoAtualizacao().equals(TipoAtualizacaoEnum.NOVO_JOGADOR)){
			return new ItemAtualizacaoJogador(id, (AtualizacaoConviteModerador) atualizacao);
		}
		return null;
	}


}
